/**
 * 文件、图片上传js
 * @since 1.0
 * @author tanjun
 * */
//上传类型
var _type="";
//已上传的个数
var _total=0;
//记录截图上传的下标
var _uploadIndex=0;
//图标个数
var _iconLimitCount=0;
//记录还可以上传的图片数量
var _uploadLimit=0;

(function($) {
	//参数设置
	_setting={
		title	   :		'图片上传',		//定义弹出窗口的title,默认值为图片上传
		name	   :		'imageList',	//定义返回页面接收的path隐藏域的name值
		url		   :		'',				//定义远程访问的url
		uploadType :		'1',
		type	   :		'image',		//定义上传类型,默认为图片
		listable   :		true,	 		//定义是否显示图片列表,默认显示
		strategy   :		false,			//定义是否显示图片策略，默认不显示
		remove	   :		false,			//定义是否可以删除，默认不可以删除
		cate	   :		false,			//定义是否显示附件分类，默认不显示
		fileType   :		'',				//定义附件上传时的文件类型,如*.jpg，多个以";"分割如'*.jpg;*.txt'
		fileSpan   :		'',				//定义上传后的文件显示列表前面的名称
		fileSize   :		'5',			//定义上传文件的大小限制
		close	   :		false,			//定义上传完后是否关闭窗口，默认不关闭
		closeTime  :		2000,			//定义上传后自动关闭窗口的时间，默认2秒
		uploadLimit:		1,				//定义允许上传的数量,默认为1个
		handler	   :		true,			//定义是否启用回调，默认启用
		upSuccess  : 		function(obj){},//上传成功后的回调函数
		systemFlag :		'',				//区分不同系统的策略标识，需要配合附件管理系统配置使用
		otherFlag  :		'',				//调用哪些策略，多策略以“,”分开,需要配合附件管理系统配置使用
		checked	   :		'',				//当otherFlag有值时才有效，图片策略是否全部勾选（默认为不勾选），当checked =yes则全部勾选，不传值则不勾选
		mustChecked:		'',				//策略是否必选（默认为不必选），当mustChecked =yes则必须选择一个，不传值则不必选。
		//以下参数为layer参数
		maxmin	   :		false,			//是否输出窗口最小化/全屏/还原按钮
		width	   :		'480px',		//窗体宽度
		height	   :		'450px',		//窗体高度
		border	   :		0,				//边框大小
		borderOpacity:		0.3,			//边框透明度
		borderColor:		'#000',			//边框颜色
		shadeClose :		false,			//用来控制点击遮罩区域是否关闭层。若开启，设为true即可
		closeBtn   :		0,				//控制层右上角关闭按钮。关闭按钮的风格（支持0和1）(若不想显示关闭按钮，设置成 false即可-有bug)
		moveDrag   :		'.xubox_title', //设定某个元素来实现对层的拖拽。值为：用来拖拽的元素选择器若不想拖拽，设置成false即可
		moveType   : 		1,				//用于配置拖拽类型.默认为直接拖动层，若值设为0，则为引导式拖动层
		moveOut	   :		false,			//用于控制层是否允许被拖出可视窗口外
		btns	   :		1,				//按钮的个数。提供了0-2的选择，设置0表示不输出按钮
		shift	   :		''				//用于控制动画弹出.有七种选择：左上(left-top),上(top), 右上(right-top),右下(right-bottom),下(bottom),左下(left-bottom),左('left')。	
	};

	$.fn.uploadfile = function(uSetting) {
		return this.each(function(){
			$(this).click(function(){
    		    var setting = _setting;
				$.extend(true, setting, uSetting);
				//最大可以上传的截图个数
		  		_uploadLimit=_setting.uploadLimit;
				//初始化页面
		  		initPage();
				upload();
				return false;
			});
		});
		
	};
	
})(jQuery);

$(function(){
 
 
});

function upload(){
	_type=_setting.type;
	//文件请求
	if(_type=="file"){
		//$("#tip").show();
		//$("#uploadIframe").attr("style","width:100%;height:390px;");
		//改变高度??
	}
	if(_setting.listable==false){
		//图片列表(父窗口)
		//$("#images").css("display","none");
	}
	var url =_setting.url+"?uploadType="+_setting.uploadType+"&strategy="+_setting.strategy+"&uploadCount="+_setting.uploadLimit+
			"&remove="+_setting.remove+"&cate="+_setting.cate+"&type="+_setting.fileType+"&systemFlag="+_setting.systemFlag+"&otherFlag="+_setting.otherFlag+
			"&mustChecked="+_setting.mustChecked+"&checked="+_setting.checked+"&fileSize="+_setting.fileSize;
	//初始化窗体
	$.layer({
        type: 2,
        title				: _setting.title,			//窗体名称
        maxmin				: _setting.maxmin,			//是否显示最小最大化
        area 				: [_setting.width , _setting.height],	//窗体大小
        border				: [_setting.border, _setting.borderOpacity, _setting.borderColor], //窗体边框大小，透明度，颜色
        shadeClose			: _setting.shadeClose, 		//开启点击遮罩关闭层
        offset 				: ['', ''],			   		//控制层坐标.默认为垂直水平居中	
        btns				: 1,				   		//按钮数量，限定为1个
        btn					: ['取消'],
        closeBtn			: [_setting.closeBtn, true],//关闭按钮的样式，0,1可选
        move				: _setting.moveDrag,		//设定某个元素来实现对层的拖拽。
        moveType			: _setting.moveType,		//拖拽移动类型
        moveOut				: _setting.moveOut,			//用于控制层是否允许被拖出可视窗口外
        shift				: _setting.shift,			//用于控制动画弹出
        iframe				: {src: url},				//iframe请求的远程地址
        success:function(){								//层弹出成功后的回调函数
        	initMessenger();
        },
        no: function(index){},							//取消的回调函数
        close: function(index){},						//层右上角关闭按钮的点击事件触发回调函数
        end: function(){},								//层被彻底关闭后执行的回调函数
        moveEnd: function(){},							//拖拽完毕触发的回调函数
        min: function(layero){},						//最小化触发后的回调函数,layero是当前层容器的实例  
		full: function(layero){},						//全屏触发后的回调函数	
		restore: function(layero){}						//还原触发后的回调函数
    });
}

function initMessenger(){
  //初始化跨域消息传递js
  var messenger=Messenger.initInParent(document.getElementById($(".xubox_iframe").attr("id")));
  //接收跨域回传的值
  messenger.onmessage = function (data) {
	  var json=eval("("+data+")");
	  if(json.length>0){
		  var paths="";
		  var fileNames="";
		  for(var i=0;i<json.length;i++){
			paths+=json[i].path+",";
			fileNames+=json[i].fileName+",";
		  }
		  if(_type=="image"){
			//图片列表
			var images="<li id=\"li"+_uploadIndex+"\" class=\"g-u\">"+
   					"<div class=\"pic\" style=\"float:right;\">"+
							"<div title=\"删除\" id='"+json[0].annexID+"' onclick=\"deleteImage('"+_uploadIndex+"')\" class=\"closeImgX\" ></div>"+
   						"<a href=\"javascript:showImage('"+json[0].fileUrl+"');\">"+
   							"<img id=\"img"+_uploadIndex+"\" class=\"preview-img\" title=\"查看原图\" src=\""+json[0].fileUrl+"\" path=\""+json[0].path+"\" style=\"display: inline;\" />"+
   						"</a>"+"<input type='hidden' id=\"url"+_uploadIndex+"\" name=\""+_setting.name+"\" value=\""+paths+"\">"+
   					"</div></li>";
			//$("#imagesUl").append(images);
			//截图上传录记数加1
			_uploadIndex++;
			//记录上传成功的截图个数加1
			_total++;
			if(_total>=_uploadLimit){
				_total=_uploadLimit;
				$("#uploadPic").attr("disabled","disabled");
			}
			//每上传一张截图，修改一次最大传图数量
			var num=_uploadLimit-_total;
			//修改参数
			_setting.uploadLimit=num;
			$("#maxCount").html(num);
		  }
		  //图标隐藏生成
		  if(_type=="icon"){
				var imgSrcHtml="";
				_iconLimitCount=json.length-1;
				for(var i=1;i<json.length;i++){
					//图标展标
					imgSrcHtml=imgSrcHtml+"<a href=\"javascript:showImage('"+json[i].fileUrl+"');\" id=\"icon"+(i-1)+"Href\" style=\"display:inline;\" >"
								+"<img title=\"查看原图\" id=\"icon"+(i-1)+"Src\" src=\""+json[i].fileUrl+"\" width=\"35\" height=\"35\" style=\"padding-right:10px;border:none;\" /></a>";
				}
				$("#iconShowDiv").html(imgSrcHtml);
		  }
		 if(_type=="file"){
		 	//软件大小
		  	$("#appSize").val(json[0].fileSize);
			$("#appUploadUrl").val(json[0].path);
			//文件名
			$("#fileName").html(_setting.fileSpan+fileNames);
		 }
	 }
	  if(_setting.close){
		  setTimeout(closeIframe,_setting.closeTime);
	  }
	  if(_setting.handler){
		 _setting.upSuccess.call(this,json);
	  }
  };
}

//初始化
function initPage(){
	//已上传的图片个数
	_total=$("#imagesUl li").length;
	if(_total>=_uploadLimit){
		_total=_uploadLimit;
		$("#uploadPic").attr("disabled","disabled");
    }
    var num=_uploadLimit-_total;
    //修改参数
	_setting.uploadLimit=num;
    $("#maxCount").html(num);
	//修改记录截图个数的下标
	_uploadIndex=_total;
}

//删除截图
function deleteImage(index){
	$("#li"+index).remove();
	//每删除一张截图，修改一次最大传图数量
	_total--;
	if(_total==0){
		_total=0;
	}
	$("#uploadPic").attr("disabled",false);
	var num=_uploadLimit-_total;
	//修改参数
	_setting.uploadLimit=num;
	//修改记录截图个数的下标
	_uploadIndex=_total;
	$("#maxCount").html(num);
	$("#image"+index).val("");
	$("#image"+index+"Url").val("");
}

//关闭弹出框
function closeIframe(){
	var index = parent.layer.getFrameIndex(window.name);
	parent.layer.close(index);
}

//图片显示
function showImage(url){
	window.open(url,"_blank");
}

document.write("<script type=\"text/javascript\" src=\"plugin/gmupload/js/messenger.min.js\" ></script>");
